package com.jh.concurrent.principle;

/**
 * @author JH_Wong
 * @projectName newforward
 * @title SyncDemo.java
 * @package com.jh.concurrent.principle
 * @description synchronized关键字demo
 * @date 2019-05-13 10:12
 */
public class SyncDemo {

    /**
     * demo1和2都是类对象锁，锁定整个类
     */
    public synchronized static void demo1() { }
    public static void demo2() {
        synchronized (SyncDemo.class) {}
    }

    /**
     * demo3和4是实例对象锁，锁定对应的实例对象
     */
    public synchronized void demo3() {}
    public void demo4() {
        synchronized (this) {}
    }

    /**
     * synchronized代码块的对象，维度的大小指的是对象的生命周期长短，、
     * 如果锁的是类，那就是跟随进程一起创建和销毁，
     * 如果锁的是实例对象，那就是实例对象方法结束的时候就释放锁
     */
    public static void main(String[] args) {}

}
